/* main.c
 * Luiz Guilherme M. Massa, 10005312
 * Matheus Martins Alves, 10108835
 * Marcelo C. R. Lopes Junior, 10104156
 * Vitor Sousa Negro, 10068104
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include "garbler.c"
#include "enlace.c"
#include "rede.c"
#include "transporte.c"


int main (int argc, char **argv) {
    char mensagem_teste[500000];
    char entrada[100];
    char comando[100], parametro1[20], parametro2[20];
    int retorno;

    char *ponteiro_comando;
    int i, j;

    if (argc != 3) {
        fprintf(stderr, "Inicializar com %s rede_virtual no_simulado\n", argv[0]);
        exit(1);
    }

    iniciaEnlace(argv[1], (int) atoi(argv[2]) - 1);
    iniciaRede();
    iniciaTransporte();

    sleep(3);

    while(1) {
        //Espera o comando
        printf("COMANDO > ");
        fflush(stdin);
        gets(entrada);

        // Interpreta o comando

        // Transforma em lower-case
        for(i = 0; i < strlen(entrada); i++)
            entrada[i] = tolower(entrada[i]);


        // ponteiro_comando = strtok(entrada, " ,.-");

        i = 0; // Variável que anda no array entrada

        // Descobre o comando
        j = 0;
        while(i < strlen(entrada)) {
            if(entrada[i] == '(') {
                comando[j] = '\0';
                break;
            }
            comando[j] = entrada[i];
            i++;
            j++;
        }

        // Anda até a próxima informação importante
        while(i < strlen(entrada)) {
            if(entrada[i] == '(' || entrada[i] == ')' || entrada[i] == ' ' || entrada[i] == ',') i++;
            else break;
        }

        // Descobre o primeiro parâmetro
        j = 0;
        while(i < strlen(entrada)) {
            if(entrada[i] == ',' || entrada[i] == ')') {
                parametro1[j] = '\0';
                break;
            }
            parametro1[j] = entrada[i];
            i++;
            j++;
        }

        // Anda até a próxima informação importante
        while(i < strlen(entrada)) {
            if(entrada[i] == '(' || entrada[i] == ')' || entrada[i] == ' ' || entrada[i] == ',') i++;
            else break;
        }

        // Descobre o segundo parâmetro
        j = 0;
        while(i < strlen(entrada)) {
            if(entrada[i] == ',' || entrada[i] == ')') {
                parametro2[j] = '\0';
                i++;
                break;
            }
            parametro2[j] = entrada[i];
            i++;
            j++;
        }



        // Abrir ponto de serviço
        if(strcmp(comando, "aps") == 0) {
            retorno = abrir_ponto_servico();
            if(retorno != -1)
                printf("Ponto de serviço criado: %d.\n", retorno);
            else
                printf("Não foi permitido criar o ponto de serviço.\n");
        }

        // 
        if(strcmp(comando, "fps") == 0) {
            retorno = fechar_ponto_servico(atoi(parametro1));
            if(retorno != -1)
                printf("Ponto de serviço fechado com sucesso.\n");
            else
                printf("Não foi possível fechar o ponto de serviço.\n");
        }

        if(strcmp(comando, "conectar") == 0) {

        }

        if(strcmp(comando, "desconectar") == 0) {

        }

        if(strcmp(comando, "baixar") == 0) {

        }

    }

    // if(meuIndiceNo == 0) {
    //     sleep(10);
    //     // strcpy(mensagem_teste, "abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789abcdefghijklmnopqrstuvxywz0123456789");
    //     strcpy(mensagem_teste, "abcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijklmnopqrstuvxywzabcdefghijkl");
    //     *(mensagem_teste+0) = '0';
    //     *(mensagem_teste+512) = '1';
    //     *(mensagem_teste+1024) = '2';
    //     *(mensagem_teste+1536) = '3';
    //     *(mensagem_teste+2048) = '4';
    //     *(mensagem_teste+2560) = '5';
    //     *(mensagem_teste+3072) = '6';
    //     *(mensagem_teste+3584) = '7';
    //     *(mensagem_teste+4096) = '8';
    //     *(mensagem_teste+4608) = '9';

    //     puts(mensagem_teste);
        
    //     enviador(1,mensagem_teste,5000);
    // }

    sleep(100);
    fechaEnlace();

}
